1. Field of the Invention
The present invention relates to the field of preemptive access of computing resources. Specifically, the present invention relates to preemptive access of computing resources in an otherwise synchronous, non-preemptive computing environment. A synchronous computing environment, as defined herein, refers to a computing environment in which only one application program is allowed to be run at a time, and non-preemptive, as defined herein, means that once an application program is running, no other application program nor the computing environment itself can preempt the program, i.e., the application program must terminate execution on its own. Although the preferred embodiment is described in terms of a computer conferencing application, the periodic preemption mechanism described herein can be used for various other types of computer applications which require periodic access to system resources.
2. Description of Related Art
A set of personal computers interconnected on a network can be effectively used as a data conferencing system. In such a system, each conference participant typically comprises a personal computer user having a computer, a screen display, a computer network interface and typically a mouse or cursor control device. Conference participants are linked together by a computer network. This network may comprise either a hardwired local area network (LAN) such as Ethernet, a telephone modem link or other conventional data communications network. Because the conference participants are linked via a computer network, the participants do not need to be located in the same physical space. Rather, an effective conference may be carried out as participants view common information on their local screen displays and manipulate information using their local cursor control devices or other input devices.
In a typical conferencing application, a group of conference participants linked via a network share common information pertaining to a particular meeting or topic under discussion. By sharing information between conference participants, each participant is able to view and manipulate the information dispersed during the meeting. Immediately after a meeting is initiated, a pool of information collected during the meeting begins to accumulate. As each conference participant makes modifications or additions to this pool of meeting information, the individual contributions must be circulated around to the other conference participants so that each participant has a complete and up-to-date copy of the meeting information. It will be appreciated that maintaining synchronization and currency of the meeting information among all conference participants is a difficult task and may involve the transfer of large amounts of information.
Taking the simple case of only two computer systems linked via the above computer conferencing scheme, one computer system is the host system and the other computer system is the guest system, or remote system. A computer application runs on the host system, while the guest system acts like a dumb terminal. The guest system transfers its inputs to the host system for processing, waits for the processed output, then updates its state and video display responsive to the processed output. In order for this scenario to work, either the host must periodically check the guest system for inputs which need to be processed or the guest system must somehow interrupt the host system when there are pending inputs.
A problem occurs when the above host-guest system configuration is employed in a synchronous, non-preemptive computing environment, such as the Windows operating system developed by Microsoft Corporation of Redmond, Wash. Microsoft is a trademark of Microsoft, Inc. Ordinarily in such a computing environment, there is no preemption means for the guest system to notify the host system of pending inputs. Instead, the guest system must wait patiently for the host system to check for input. In some circumstances the guest system is not serviced for many clock cycles. In the worst case, the guest system is never serviced and will appear to a user to be non-responsive.
Thus, a better manner of providing the guest system with periodic access to the host system's resources is desired.